//import java.io.*;
//import java.io.ObjectInputStream.GetField;
//import java.net.*;
//import java.util.ArrayList;
//
//public class Client3 {
//	
//	private static BtSearch algo;
//
//	public static void main(String[] pArgs) 
//	{
//		if(pArgs.length<3)
//		{
//			System.out.println("usage: java Client host port boardnum");
//			return;
//		}
//	
//		try
//		{
//			Socket lSocket=new Socket(pArgs[0],Integer.parseInt(pArgs[1]));
//			PrintWriter lOut=new PrintWriter(lSocket.getOutputStream());
//			BufferedReader lIn=new BufferedReader(new InputStreamReader(lSocket.getInputStream()));
//	
//            lOut.println(pArgs[2]);
//            lOut.flush();
//
//            String lLine=lIn.readLine();
//            
//            
//            //create a list of the string
//            ArrayList<String> level = new ArrayList<String>();
//            
//            
//            
//            //read number of rows
//            int lNumRows=Integer.parseInt(lLine);
//
//            //read each row
//            for(int i=0;i<lNumRows;i++)
//            {
//                lLine=lIn.readLine();
//                level.add(lLine);
//                //here, we would store the row somewhere, to build our board
//                //in this demo, we just print it
//               System.out.println(lLine);
//            }
//            
//            //read number of columns
//            int lNumColumns=level.get(0).length();
//            
//            //build the board 
//            Board board = new Board (lNumRows,lNumColumns, level);
//            
//            
//            // create playerNBoxes positions
//            PlayerNBoxes playerNBoxes = new PlayerNBoxes(lNumRows,lNumColumns, level);
//            
//            int numBoxes=playerNBoxes.getBoxesSize();
//            int[] signHash = new int[10000];
//            //for(int i=0;i<10000;i++)
//            	//signHash[i]=0;
//            
//            System.out.println(signHash.length);
//            
//            
//            System.out.println(playerNBoxes);
//            System.out.println(board);
//            
//            ArrayList<Position> possibleMoves = Helper.getPossibleMoves(board, playerNBoxes);
//            
//            System.out.println("possible Moves: ");
//            for ( Position pos : possibleMoves){
//            	System.out.println(pos);
//            }
//            
//            
//            Client3.algo = new BtSearch(board, playerNBoxes, signHash);
//            
//            int sign;
//            sign=BoardSignature.getSignature(board,playerNBoxes);
//            //System.out.println(sign);
//            System.out.println(algo.iteration());
//            System.out.println(sign);
//         
////            
////            
////
////            
////            //now, we should find a solution to the sokoban
////
////            //we've found our solution (this is actually the solution to board 1)    
////            String lMySol="U R R U U L D L L U L L D R R R R L D D R U R U D L L U R";
////            //these formats are also valid:
////            //String lMySol="URRUULDLLULLDRRRRLDDRURUDLLUR";
////            //String lMySol="0 3 3 0 0 2 1 2 2 0 2 2 1 3 3 3 3 2 1 1 3 0 3 0 1 2 2 0 3";
////
////            //send the solution to the server
////            lOut.println(lMySol);
////            lOut.flush();
////    
////            //read answer from the server
////            lLine=lIn.readLine();
//    
////            System.out.println(lLine);
////            System.out.println (" SELFTEST #################");
////            Tester.runSelfTest();
//		}
//		catch(Throwable t)
//		{
//			t.printStackTrace();
//		}
//	}
//
//}
